home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / woodls.bas < prev    next >
BASIC Source File  |  1986-09-08  |  4KB  |  133 lines

  1. 10 CLS:KEY OFF
  2. 20 REM  WOODWARD-LAWSON SAMPLING METHOD
  3. 30 REM     LINE SOURCE SYNTHESIS
  4. 40 REM            7/14/86
  5. 50 REM   AHMAD FAIZAL MOHD ZAIN
  6. 60 '
  7. 70 PI=3.1415926#
  8. 80 YMAX=0:YMIN=0
  9. 90 INPUT"LINE SOURCE LENGTH ";L
  10. 100 NMAX=L
  11. 110 DIM W(2*NMAX+1),A(2*NMAX+1),ANG(2*NMAX+1),F(200)
  12. 120 DIM Y(2000),I(2000),PHI(500)
  13. 130 CLS:PRINT"Sample point","  w(n)","angle(N)","desired"
  14. 140 FOR N=-NMAX TO NMAX
  15. 150   I=N+NMAX
  16. 160   W(I)=N/L
  17. 170   X=W(I)
  18. 180   IF X*X=1 AND X>0 THEN ANG(I)=0:GOTO 210
  19. 190   IF X*X=1 AND X<0 THEN ANG(I)=-180:GOTO 210
  20. 200   ACOS=1.570796-ATN(X/SQR(1-X*X)):ANG(I)=180*ACOS/PI
  21. 210  PRINT I,:PRINT USING "##.##       ####.##  ";W(I);ANG(I),:INPUT"       ";A(I)
  22. 220 NEXT N
  23. 230 '
  24. 240 GOSUB 780
  25. 250 CLS:GOSUB 1160
  26. 260 '
  27. 270 FOR THETA=0 TO 180
  28. 280 W=COS(THETA*PI/180)
  29. 290 F(THETA)=0
  30. 300 FOR N=-NMAX TO NMAX
  31. 310   A=PI*L*(W-W(N+NMAX))
  32. 320   IF A=0 THEN F(THETA)=F(THETA)+A(N+NMAX):GOTO 340
  33. 330   F(THETA)=F(THETA)+A(N+NMAX)*SIN(A)/A
  34. 340 NEXT N
  35. 350  Y(THETA)=F(THETA)
  36. 360  IF Y(THETA)>YMAX THEN YMAX=Y(THETA)
  37. 370  IF Y(THETA)<YMIN THEN YMIN=Y(THETA)
  38. 380 NEXT THETA
  39. 390 '
  40. 395 KK=1
  41. 400 GOSUB 850        'SET UP SCREEN
  42. 410 GOSUB 930        'PLOT PATTERN
  43. 420 GOSUB 1150
  44. 425 KK=0
  45. 430 '
  46. 440 '     TO CALCULATE CURRENTS
  47. 450 '
  48. 460 I=0
  49. 470 YMAX=0:YMIN=0
  50. 480 PMAX=0:PMIN=0
  51. 490 FOR S=-L/2 TO L/2 STEP L/100
  52. 500 I=I+1
  53. 510   CR=0:CI=0
  54. 520   FOR N=-NMAX TO NMAX
  55. 530     A=2*PI*W(N+NMAX)*S
  56. 540     CR=CR+A(N+NMAX)*COS(A)
  57. 550     CI=CI+A(N+NMAX)*SIN(A)
  58. 560   NEXT N
  59. 570 CR=CR/L:CI=CI/L
  60. 580 I(I)=SQR(CR*CR+CI*CI)
  61. 590 IF CR=0 AND CI>0 THEN PHI(I)=90:GOTO 630
  62. 600 IF CR=0 AND CI<0 THEN PHI(I)=270:GOTO 630
  63. 610 IF CR=0 AND CI=0 THEN PHI(I)=0:GOTO 630
  64. 620 PHI=ATN(CI/CR):PHI(I)=PHI*180/PI
  65. 630 Y(I)=I(I)
  66. 640 IF Y(I)>YMAX THEN YMAX=Y(I)
  67. 650 IF Y(I)<YMIN THEN YMIN=Y(I)
  68. 660 IF PHI(I)>PMAX THEN PMAX=PHI(I)
  69. 670 IF PHI(I)<PMIN THEN PMIN=PHI(I)
  70. 680 NEXT S
  71. 690 '
  72. 693 GOSUB 850
  73. 695 GOSUB 1040
  74. 700 GOSUB 1180
  75. 710 '
  76. 720 END
  77. 730 INPUT"DO YOU WANT TO MAKE ANY CHANGES";AN$
  78. 740 IF AN$="N" OR AN$="n" THEN RETURN
  79. 750 INPUT"TYPE SAMPLING POINT TO CHANGE ";Q
  80. 760 PRINT Q,W(Q),ANG(Q),A(Q),:INPUT A(Q)
  81. 770 '
  82. 780 CLS:PRINT"Sample point","  w(n)","angle(N)","desired"
  83. 790 FOR N=-NMAX TO NMAX:I=N+NMAX
  84. 800  PRINT I,:PRINT USING "##.##       ####.##  ";W(I);ANG(I),:PRINT,A(I)
  85. 810 NEXT N
  86. 820 PRINT
  87. 830 GOSUB 730
  88. 840 RETURN
  89. 850 '      Set up Screen for plotting
  90. 860 SCREEN 2:CLS
  91. 870 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+";:NEXT K
  92. 875 IF KK=1 GOTO 890
  93. 880 FOR K=4 TO 20 STEP 4:LOCATE K,67:PRINT"-":NEXT K
  94. 890 VIEW (52,28)-(530,154),,1
  95. 900 LINE (239,0)-(239,154)
  96. 910 RETURN
  97. 920 '
  98. 930 PSET (0,Y(0))
  99. 940 WINDOW (0,YMIN)-(180,YMAX)
  100. 945 LINE (0,0)-(180,0),,,&HF0F0
  101. 946 PRESET (0,1)
  102. 947 LINE (0,1)-(180,1),,,&HF0F0
  103. 949 PRESET (0,Y(0))
  104. 950 FOR X=0 TO 180
  105. 960   LINE -(X,Y(X))
  106. 970 NEXT X
  107. 980 LOCATE 3,20:PRINT"MAGNITUDE OF SYNTHESISED PATTERN"
  108. 1000 LOCATE 21,6:PRINT"180":LOCATE 21,37:PRINT"90":LOCATE 21,67:PRINT"0"
  109. 1010 RETURN
  110. 1020 '
  111. 1030 '     plot current distribution
  112. 1040 LOCATE 3,20:PRINT"MAGNITUDE OF CURRENT DISTRIBUTION"
  113. 1050 '
  114. 1060 WINDOW (1,YMIN)-(I,YMAX)
  115. 1070 '
  116. 1080 PSET (1,Y(1))
  117. 1090 FOR X=1 TO I
  118. 1100   LINE -(X,Y(X))
  119. 1110 NEXT X
  120. 1120 LOCATE 21,6:PRINT-L/2:LOCATE 21,37:PRINT"0":LOCATE 21,66:PRINT L/2
  121. 1130 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT(20-K)/16:NEXT K
  122. 1140 RETURN
  123. 1150 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  124. 1160 PRINT"I'm doing some calculation.  Please wait..."
  125. 1170 RETURN
  126. 1180 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1240
  127. 1190 AN$=INKEY$
  128. 1200 IF AN$="Y" OR AN$="y" THEN RUN
  129. 1210 IF AN$="N" OR AN$="n" THEN END
  130. 1220 GOTO 1180
  131. 1230 :
  132. 1240 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  133.